<
theory, programming> A concept first identified by
Christopher Strachey (1967) and developed by Hindley and
Milner, allowing
types such as list of anything. E.g. in
Haskell:
length :: [
a] -> Int
is a function which operates on a list of objects of any type,
a (a is a
type variable). This is known as parametric
polymorphism. Polymorphic typing allows strong type checking
as well as generic functions.
ML in 1976 was the first
language with polymorphic typing.
Ad-hoc
polymorphism (better described as
overloading) is the
ability to use the same syntax for objects of different types,
e.g. "+" for addition of reals and integers or "-" for unary
negation or diadic subtraction. Parametric
polymorphism
allows the same object code for a function to handle arguments
of many types but overloading only reuses syntax and requires
different code to handle different types.
See also
generic type variable.
In
object-oriented programming, the term is used to describe
a
variable that may refer to objects whose
class is not
known at
compile time and which respond at
run time
according to the actual class of the object to which they
refer.
(2002-08-08)